/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package streams;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
import java.io.Writer;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Educacionit
 */
public class ClaseStreams {
    private static File archivoOut;
    private static File archivoIn;
    public static void setArchivoEntrada(String nombre){
        archivoIn = new File(nombre);
    }
    public static void setArchivoSalida(String nombre){
        archivoOut = new File(nombre);
    }
    public static void main(String[] args) {
        
            setArchivoEntrada(args[0]);
            setArchivoSalida(args[1]);

            copiarMejorado();

    }
    public static void leer(){
        
        Reader in = null;
        try{
            in = new FileReader(archivoIn);
            while(in.ready()){
                char c = (char)in.read();
                System.out.print(c);
            }
            System.out.print("\n");
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            try{
                in.close();
            }catch(Exception e){
                e.printStackTrace();
            }
        }
    }
    public static void escribir(String frace){
        
//        System.out.println(archivo.exists());

//        archivo.createNewFile();
//        System.out.println(archivo.getAbsolutePath());

        Writer out = null;
        try{
            out = new FileWriter(archivoIn);
            for(int i = 0 ; i < frace.length() ; i++)
                out.write(frace.charAt(i));

        }catch(Exception e){
            e.printStackTrace();
        }finally{
            try{
                out.close();
            }catch(Exception e){
                e.printStackTrace();
            }
        }
    }
    public static void copiar(){
        
//        System.out.println(archivoIn.exists());
//        System.out.println(archivoOut.exists());

//        archivo.createNewFile();
//        System.out.println(archivoIn.getAbsolutePath());
//        System.out.println(archivoOut.getAbsolutePath());
        
        Reader in = null;
        Writer out = null;
        try{
            in = new FileReader(archivoIn); 
            out = new FileWriter(archivoOut); 
            
            while(in.ready()){
                char c = (char)in.read();
                out.write(c);
            }
                       
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            try{
                in.close();
                out.close();
            }catch(Exception e){
                e.printStackTrace();
            }
        }
    }
    public static void leerMejorado(){

        Reader in = null;

        try{
            in = new BufferedReader( new FileReader(archivoIn));

            while(in.ready()){
                char c = (char)in.read();
                System.out.print(c);
            }
            System.out.print("\n");
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            try{
                in.close();
            }catch(Exception e){
                e.printStackTrace();
            }
        }
    }

    public static void escribirMejorado(String frace){

        Writer out = null;
        BufferedWriter bout = null;
        try{
            out = new FileWriter(archivoIn);
            bout = new BufferedWriter(out);
            
            for(int i = 0 ; i < frace.length() ; i++)
                bout.write(frace.charAt(i));

        }catch(Exception e){
            e.printStackTrace();
        }finally{
            try{
                bout.close();
            }catch(Exception e){
                e.printStackTrace();
            }
            try{
                out.close();
            }catch(Exception e){
                e.printStackTrace();
            }
        }
    }
    public static void copiarMejorado(){

//        System.out.println(archivoIn.exists());
//        System.out.println(archivoOut.exists());

//        archivo.createNewFile();
//        System.out.println(archivoIn.getAbsolutePath());
//        System.out.println(archivoOut.getAbsolutePath());

        Reader in = null;
        Writer out = null;
        BufferedReader bin = null;
        BufferedWriter bout = null;
        try{
            in = new FileReader(archivoIn);
            bin = new BufferedReader(in);
            out = new FileWriter(archivoOut);
            bout = new BufferedWriter(out);

            while(bin.ready()){
                String cadena = bin.readLine();
                bout.write(cadena);
            }

        }catch(Exception e){
            e.printStackTrace();
        }finally{
            try{
                bin.close();

            }catch(Exception e){
                e.printStackTrace();
            }
            try{

                bout.close();
            }catch(Exception e){
                e.printStackTrace();
            }
            try{
                in.close();
            }catch(Exception e){
                e.printStackTrace();
            }
            try{
                out.close();

            }catch(Exception e){
                e.printStackTrace();
            }
            
        }
    }
}
